Computer storage devices, and particularly optical storage devices, typically employ a multi-dimensional error correction code ECC (e.g., a product code) to enhance performance by increasing systems immunity to noise, thereby allowing an increase in storage capacity while maintaining an arbitrary low bit error rate. A conventional compact disk (CD) storage device employs a multiple layer ECC design: a two-dimensional product code comprising horizontal and diagonal codewords, and a Cross-Interleaved Reed-Solomon code (CIRC) commonly referred to as a C1/C2 code. A more recent optical storage device, digital video disk (DVD), also employs a two-dimensional product code comprised of horizontal and vertical codewords but with significantly more ECC redundancy so as to obviate the need for the C1/C2 code found in CD devices (see FIG. 3A). The DVD format will likely dominate the market and eventually obsolete the CD format. However, during the transitional period from CD to DVD, it will be desirable to provide storage devices capable of reading either format. In other words, one should be able to insert either a CD or DVD disk into future optical storage devices and expect it to operate transparently regardless as to the format. The challenge is to implement the error correction circuitry for both the CD and DVD formats in an efficient, cost effective manner.
Another aspect of error correction systems relevant to the present invention is the validation code typically employed to verify the validity and completeness of corrections made to the product code. There is a certain probability of a miscorrection associated with every error correction code, including product codes. The term miscorrection refers to the possible, although rare event when the ECC redundancy indicates that the product codeword has been successfully corrected when in fact errors still remain. Although the probability of a miscorrection occurring is quite small, the repercussions are potentially disastrous, especially when the recorded data is computer information which cannot tolerate mutation (consider, for example, the effect of mutating tax information). For this reason, computer storage devices typically employ an additional layer of ECC referred to as a validation code, the sole purpose of which is to detect and prevent miscorrected data from being transferred to the host system. Although there is a small probability that a miscorrection will get past the validation code undetected, this probability is so small it is essentially zero.
The validation code is necessary; however, it represents a significant bottleneck in the overall throughput of the storage device. The horizontal and vertical codewords of the product code are typically stored in a data buffer (DRAM) so that it can be accessed by the product code error correction system. The latency in accessing this data buffer is a significant factor in the overall latency of the storage device. In the prior art, checking for miscorrections occurs after the ECC redundancy indicates that the product code has been "successfully" corrected. This requires an additional access to the data buffer to read the entire product code and generate the syndromes for the validation code. The latency associated with this additional buffer access is a drawback overcome by the present invention.